/**
 * @param {Object} animal 被继承的对象
 * @param {Function} createDog 
 * @returns {Object}
 * @description
	寄生式继承是在原型式继承的基础上，增强了新对象，返回的仍然是原来的引用类型
	
	优点：
	可以在不改变原型链的情况下增强对象。
	
	缺点：
	引用类型的属性会被所有子类实例共享，并且修改一个子类实例的属性会影响其他子类实例的属性。
 */
const animal = {
	type: 'Animal',
	say: function() {
		console.log('I am an animal.');
	},
	hobbies: {
		book: '哈利波特历险记',
		life: '跑步'
	}
}

function createDog() {
	const dog = Object.create(animal); //将一个对象直接赋值给另一个对象的原型
	// dog.type = 'Dog';
	const bark = function() {
		console.log('I can bark.');
	}
	dog.bark = bark; //增强新对象
	return dog;
}

const dog = createDog();
console.log(dog.type); // Dog
dog.say(); // I am an animal.
dog.bark(); // I can bark.